package org.groupg.practice.guiPractice.layoutDemo;

import javax.swing.*;
import java.awt.*;

public class GridLayoutExample {
    public static void main(String[] args) {
        // 创建一个 JFrame
        JFrame frame = new JFrame("GridLayout Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);

        // 创建一个 GridLayout，设置为 2 行 3 列
        frame.setLayout(new GridLayout(2, 3));

        // 创建一些按钮和面板
        JButton button1 = new JButton("Button 1");
        JButton button2 = new JButton("Button 2");
        JPanel panel = new JPanel();
        panel.add(new JButton("Big Button"));
        panel.setLayout(new GridLayout(1, 1));  // 内部布局，可以省略

        // 设置面板占用两格宽度
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridwidth = 2;
        gbc.fill = GridBagConstraints.BOTH;  // 使组件填充整个单元格

        // 添加组件到 JFrame，注意将面板添加到 GridLayout 的特定位置
        frame.add(button1);
        frame.add(button2);
        // 由于 GridLayout 不直接使用 GridBagConstraints，
        // 我们需要通过一个空的边界来"模拟"添加大面板的位置
        frame.add(panel);  // 这里 panel 自动占据一行中剩下的两列（第3,4列）
        // 如果需要更复杂的布局控制，考虑使用 GridBagLayout 代替 GridLayout

        // 添加更多按钮示例
        frame.add(new JButton("Button 3"));
        frame.add(new JButton("Button 4"));
        frame.add(new JButton("Button 5"));  // 这个将换行

        // 显示 JFrame
        frame.setVisible(true);
    }
}